package etm.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;

import upc.condominio.modelo.Morosos;
import upc.condominio.modelo.Residente;
import upc.condominio.util.ConexionBD;
import etm.excepcion.DAOExcepcion;

public class MorososDAO extends BaseDAO{

	
	public Collection<Morosos> buscarPorResidente(String dato) throws DAOExcepcion {
		System.out.println("MorososDAO: buscarPorNombre(String dato)=" + dato);
		String strQuery =	" select c.idCuota, c.idVivienda, c.idResidente, c.Periodo, c.Importe, c.Saldo, c.FechaVencimiento, v.numero " +
							" from condominio.cuota c " +
							" inner join condominio.residente r on (c.idresidente = r.idresidente) " +
							" inner join condominio.vivienda v on (c.idresidente = v.idresidente) " +
							" where c.Saldo > 0 and c.idResidente like ?;";
		System.out.println("MorososDAO: buscarPorNombre(strQuery)=" + strQuery);
		Collection<Morosos> lista = new ArrayList<Morosos>();
		Residente rsResidente = null;
		ResidenteDAO daoResidente =null;
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(strQuery);
			if (dato==""){
				stmt.setString(1, "%");
			}else{
				stmt.setString(1, dato);
			}
			//stmt.setString(1, "%" + dato + "%");
			rs = stmt.executeQuery();
			while (rs.next()) {
				Morosos vo = new Morosos();
				vo.setIdCuota(rs.getInt("idCuota"));
				vo.setIdVivienda(rs.getInt("idVivienda"));
				vo.setIdResidente(rs.getInt("idResidente"));
				vo.setPeriodo(rs.getString("Periodo"));
				vo.setConcepto("Cuotas del Mes");
				vo.setImporte(rs.getDouble("Importe"));
				vo.setSaldo(rs.getDouble("Saldo"));
				vo.setVence(rs.getDate("FechaVencimiento"));
				//Residente
				daoResidente = new ResidenteDAO();
				rsResidente = daoResidente.buscarporId(rs.getInt("idresidente"));
				vo.setRsResidente(rsResidente);
				vo.setNumero(rs.getString("numero"));
				lista.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return lista;
	}
	
}
